# 公用的工具类
import functools
from flask import session, current_app, g

from info.models import User


def do_index_class(index):
    """返回指定索引对应的类名"""
    if index == 0:
        return 'first'
    elif index == 1:
        return 'second'
    elif index == 2:
        return 'third'
    return ''


def user_login_data(f):
    # 让返回的函数名为外层传入的函数名
    @functools.wraps(f)
    def wrapper(*args, **kwargs):

        # 我们可以再登录的时候, 返回session信息(如果有的话)
        # 1. 从session中获取用户ID
        user_id = session.get('user_id', None)
        user = None

        # 2. 如果user_id存在, 就查询数据库
        if user_id:
            try:
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)

        # 3. 通过g变量赋值
        # g变量可以在1个请求的多个方法中进行传值
        g.user = user

        return f(*args, **kwargs)
    return wrapper
